export interface ILoginDTO {
	username: string;
	password: string;
	code: string;
	randomStr: string;
	grant_type?: string;
	scope?: string;
}

export interface ILoginVO {
	sub: string;
	clientId: string;
	iss: string;
	token_type: string;
	access_token: string;
	refresh_token: string;
	aud: string[];
	nbf: string;
	user_info: UserInfo;
	user_id: string;
	scope: string[];
	exp: string;
	expires_in: string;
	iat: string;
	jti: string;
	username: string;
}

interface UserInfo {
	password: null;
	username: string;
	authorities: Authority[];
	accountNonExpired: boolean;
	accountNonLocked: boolean;
	credentialsNonExpired: boolean;
	enabled: boolean;
	attributes: Attributes;
	id: string;
	deptId: string;
	phone: string;
	name: string;
}

interface Authority {
	authority: string;
}

interface Attributes {
	userDataScope: UserDataScope;
}

interface UserDataScope {
	allScope: boolean;
	onlySelf: boolean;
	scopeUserIds: string[];
	scopeDeptIds: string[];
}

export interface IUserInfoVO {
	sysUser: ISysUser;
	permissions: string[];
	roles: string[];
	roleList: RoleList[];
}

export interface ISysUser {
	userId: string;
	username: string;
	password: string;
	createBy: string;
	updateBy: string;
	createTime: string;
	updateTime: string;
	delFlag: string;
	lockFlag: string;
	phone: string;
	avatar: string;
	deptId: string;
	wxOpenid: any;
	miniOpenid: string;
	qqOpenid: any;
	giteeLogin: string;
	oscId: any;
	nickname: string;
	name: string;
	email: string;
}

interface RoleList {
	roleId: string;
	roleName: string;
	roleCode: string;
	roleDesc: string;
	scopeType: string;
	scopeResources: any;
	createBy: any;
	updateBy: any;
	createTime: string;
	updateTime: string;
	delFlag: string;
}
